<template>
  <div class="app" v-if="isReady">
    <router-view />
  </div>
  <div class="app-loading" v-else>
    <!-- 可以添加加载动画 -->
  </div>
</template>

<script setup>
import { onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import P_store from "./store/login/index";
import * as dd from "dingtalk-jsapi";

// 使用 store 和 router
const P = P_store();
const router = useRouter();

// 应用就绪状态
const isReady = ref(false);

/**
 * 应用初始化
 * 根据环境执行不同的初始化逻辑
 */
onMounted(async () => {
  try {
    console.log("🚀 应用开始初始化...");

    // 检查是否为钉钉环境
    const isInDingTalk = dd.env.platform !== "notInDingTalk";

    if (isInDingTalk) {
      console.log("📱 钉钉环境初始化");
      await initDingTalk();
    } else {
      console.log("🌐 浏览器环境初始化");
      await initBrowser();
    }

    // 标记为就绪
    isReady.value = true;
    console.log("✅ 应用初始化完成");
  } catch (error) {
    console.error("❌ 应用初始化失败:", error);
    // 即使初始化失败，也显示应用（避免白屏）
    isReady.value = true;
  }
});

/**
 * 钉钉环境初始化
 * 直接调用钉钉登录流程
 */
async function initDingTalk() {
  try {
    await P.Hp_Login();
  } catch (error) {
    console.error("钉钉登录失败:", error);
    // 钉钉登录失败时，可以尝试跳转到登录页
    if (__REDIRECT__) {
      window.location.href = __REDIRECT__;
    }
  }
}

/**
 * 浏览器环境初始化
 * 检查 token 并获取用户信息
 */
async function initBrowser() {
  // 从 URL 参数或 sessionStorage 获取 token
  const urlParams = new URLSearchParams(window.location.search);
  const tokenFromUrl = urlParams.get("token");
  const tokenFromStorage = sessionStorage.getItem("token");
  const token = tokenFromUrl || tokenFromStorage;

  if (token) {
    console.log("✅ 找到 token，开始获取用户信息");

    // 如果 token 来自 URL，保存到 sessionStorage
    if (tokenFromUrl) {
      sessionStorage.setItem("token", token);
      console.log("💾 Token 已保存到 sessionStorage");
    }

    // 获取用户信息
    await P.Hp_UserInfo();
  } else {
    console.log("⚠️  未找到 token，准备跳转");
    handleNoToken();
  }
}

/**
 * 处理无 token 的情况
 * 根据配置决定跳转到登录页还是重定向地址
 */
function handleNoToken() {
  if (__REDIRECT__ && __REDIRECT__ !== "NO") {
    console.log("🔀 重定向到:", __REDIRECT__);
    window.location.href = __REDIRECT__;
  } else {
    console.log("🚪 跳转到登录页");
    router.push("/login");
  }
}
</script>

<style lang="less">
.app {
  position: relative;
  width: 100%;
  height: 100vh;
}

.app-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100vh;
  background-color: #f5f5f5;
}
</style>